1 队列
2 Queue 1 2 3 4 5 6 7 8 public interface Queue <E > { int getSize () ; boolean isEmpty () ; void enqueue (E e) ; E dequeue () ; E getFront () ; }
#3 ArrayQueue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 public class ArrayQueue <E > implements Queue <E > { private Array<E> array; public ArrayQueue (int capacity) { array = new Array<>(capacity); } public ArrayQueue () { array = new Array<>(); } @Override public int getSize () { return array.getSize(); } @Override public boolean isEmpty () { return array.isEmpty(); } public int getCapacity () { return array.getCapacity(); } @Override public void enqueue (E e) { array.addLast(e); } @Override public E dequeue () { return array.removeFirst(); } @Override public E getFront () { return array.getFirst(); } @Override public String toString () { StringBuilder res = new StringBuilder(); res.append("Queue: " ); res.append("front [" ); for (int i = 0 ; i < array.getSize() ; i ++){ res.append(array.get(i)); if (i != array.getSize() - 1 ) res.append(", " ); } res.append("] tail" ); return res.toString(); } public static void main (String[] args) { ArrayQueue<Integer> queue = new ArrayQueue<>(); for (int i = 0 ; i < 10 ; i ++){ queue.enqueue(i); System.out.println(queue); if (i % 3 == 2 ){ queue.dequeue(); System.out.println(queue); } } } }
4 入队 enqueue array.addLast(e); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 @Override public void enqueue (E e) { array.addLast(e); } ---------------------------------------------------------------- public void addLast (E e) { add(size, e); } ---------------------------------------------------------------- public void add (int index, E e) { if (index < 0 || index > size) throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size." ); if (size == data.length) resize(2 * data.length); for (int i = size - 1 ; i >= index ; i --) data[i + 1 ] = data[i]; data[index] = e; size ++; } ----------------------------------------------------------------
5 出队 dequeue array.removeFirst(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 @Override public E dequeue () { return array.removeFirst(); } ---------------------------------------------------------------- public E remove (int index) { if (index < 0 || index >= size) throw new IllegalArgumentException("Remove failed. Index is illegal." ); E ret = data[index]; for (int i = index + 1 ; i < size ; i ++) data[i - 1 ] = data[i]; size --; data[size] = null ; if (size == data.length / 4 && data.length / 2 != 0 ) resize(data.length / 2 ); return ret; } public E removeFirst () { return remove(0 ); }
6 队首元素 array.getFirst(); 1 2 3 4 5 6 7 8 @Override public E getFront () { return array.getFirst(); } public E getFirst () { return get(0 ); }
Author:
John Doe
Permalink:
http://yoursite.com/2019/10/10/数据结构算法/数据结构与算法 总结笔记/2 栈和队列/队列/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?